package control;

import entidad.Item; 
import entidad.Presupuesto; 
import entidad.Rubro; 
import entidad.Sistema;
import java.util.ArrayList; 
import java.util.Date;

// <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
// #[regen=yes,id=DCE.E9101591-7E8D-4D0B-A21F-69572B0ABBF7]
// </editor-fold> 
public class ControlRubro {

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.57AF182A-C332-712B-B3FD-F5F49101A2DF]
    // </editor-fold> 
    public Rubro getRubro (Presupuesto presupuesto, int idRubro) {
        return presupuesto.getRubro().get(idRubro);
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.843C8A2D-2D96-0090-CAEF-FCE06E77E4AC]
    // </editor-fold> 
    public void setRubro (Presupuesto presupuesto,int idRubro, Rubro val) {
       presupuesto.getRubro().get(idRubro).setRubro(val);        
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.088B7948-55B7-2561-7C72-B24A1BB8835E]
    // </editor-fold> 
    public boolean validarNombre (String val) {
        //Si la longitud del nombre tiene de 5 a 30 caracteres se acepta
        if(val.length()<5&&val.length()>30){
            return false;
        }
        return true;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.41513D29-BF68-C96C-DC61-46542B917293]
    // </editor-fold> 
    public boolean verificarValidezDinero (float dinero, Presupuesto presupuesto) {
        //Si el dinero que se quiere aprobar es negativo no se puede permitir y se retorna false
        if(dinero<0){
            return false;
        }
        //Si el presupuesto aprobado es menor que el presupuesto comprometido sumado al dinero del rubro se retorna false
        if(presupuesto.getPresupuestoAprobado()<presupuesto.getPresupuestoComprometido()+dinero){
            return false;
        }
        //si la cantidad de dinero es positiva y si el nuevo presupuesto comprometido 
        //es menor o igual que el presupuesto aprobado, se retorna true
        return true;
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.7AB5882E-7139-A136-C56E-4C0133CE4C53]
    // </editor-fold> 
    public ArrayList<Item> getItems (Rubro rubro) {
        return rubro.getItem();
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.3E8D452D-8188-0E28-06F0-B2641E912012]
    // </editor-fold> 
    public void agregarItem (Item item, Rubro rubro) {
        //Se agrega el item al modelo, 
        rubro.agregarItem(item);
        
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.21469297-AD54-15D1-C2B3-247F5E2170AA]
    // </editor-fold> 
    public float eliminarItem (int idItem, Rubro rubro) {
        //Se le manda al rubro el id del item que debe borrar
        return rubro.eliminarItem(idItem);
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.9CDDCDA2-49F2-EEBA-C709-3A77940ED218]
    // </editor-fold> 
    public String transferirFondos (Rubro fuente, Rubro destino, float monto) {
        //Se actualiza el valor del rubro fuente
        fuente.actualizarValorApropiado(monto*-1);
        //Se actualiza el valor del rubro destino
        destino.actualizarValorApropiado(monto);
        return "Tranferencia exitosa";
    }

    // <editor-fold defaultstate="collapsed" desc=" UML Marker "> 
    // #[regen=yes,id=DCE.207DFEA7-CB8C-EB6F-2574-BCB95A86F821]
    // </editor-fold> 
    public boolean verificarDisponibilidad (Rubro fuente, float monto) {
        if(fuente.getPresupuestoApropiado()<fuente.getPresupuestoComprometido()+monto){
            return false;
        }
        return true;
    }

}

